home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / blackfin / include / asm / ptrace.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.1 KB  |  171 lines

  1. #ifndef _BFIN_PTRACE_H
  2. #define _BFIN_PTRACE_H
  3.  
  4. /*
  5.  * GCC defines register number like this:
  6.  * -----------------------------
  7.  *       0 - 7 are data registers R0-R7
  8.  *       8 - 15 are address registers P0-P7
  9.  *      16 - 31 dsp registers I/B/L0 -- I/B/L3 & M0--M3
  10.  *      32 - 33 A registers A0 & A1
  11.  *      34 -    status register
  12.  * -----------------------------
  13.  *
  14.  * We follows above, except:
  15.  *      32-33 --- Low 32-bit of A0&1
  16.  *      34-35 --- High 8-bit of A0&1
  17.  */
  18.  
  19. #ifndef __ASSEMBLY__
  20.  
  21. /* this struct defines the way the registers are stored on the
  22.    stack during a system call. */
  23.  
  24. struct pt_regs {
  25.     long orig_pc;
  26.     long ipend;
  27.     long seqstat;
  28.     long rete;
  29.     long retn;
  30.     long retx;
  31.     long pc;        /* PC == RETI */
  32.     long rets;
  33.     long reserved;        /* Used as scratch during system calls */
  34.     long astat;
  35.     long lb1;
  36.     long lb0;
  37.     long lt1;
  38.     long lt0;
  39.     long lc1;
  40.     long lc0;
  41.     long a1w;
  42.     long a1x;
  43.     long a0w;
  44.     long a0x;
  45.     long b3;
  46.     long b2;
  47.     long b1;
  48.     long b0;
  49.     long l3;
  50.     long l2;
  51.     long l1;
  52.     long l0;
  53.     long m3;
  54.     long m2;
  55.     long m1;
  56.     long m0;
  57.     long i3;
  58.     long i2;
  59.     long i1;
  60.     long i0;
  61.     long usp;
  62.     long fp;
  63.     long p5;
  64.     long p4;
  65.     long p3;
  66.     long p2;
  67.     long p1;
  68.     long p0;
  69.     long r7;
  70.     long r6;
  71.     long r5;
  72.     long r4;
  73.     long r3;
  74.     long r2;
  75.     long r1;
  76.     long r0;
  77.     long orig_r0;
  78.     long orig_p0;
  79.     long syscfg;
  80. };
  81.  
  82. /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
  83. #define PTRACE_GETREGS            12
  84. #define PTRACE_SETREGS            13    /* ptrace signal  */
  85.  
  86. #define PTRACE_GETFDPIC           31
  87. #define PTRACE_GETFDPIC_EXEC      0
  88. #define PTRACE_GETFDPIC_INTERP    1
  89.  
  90. #define PS_S  (0x0002)
  91.  
  92. #ifdef __KERNEL__
  93.  
  94. /* user_mode returns true if only one bit is set in IPEND, other than the
  95.    master interrupt enable.  */
  96. #define user_mode(regs) (!(((regs)->ipend & ~0x10) & (((regs)->ipend & ~0x10) - 1)))
  97. #define instruction_pointer(regs) ((regs)->pc)
  98. #define profile_pc(regs) instruction_pointer(regs)
  99. extern void show_regs(struct pt_regs *);
  100.  
  101. #endif  /*  __KERNEL__  */
  102.  
  103. #endif                /* __ASSEMBLY__ */
  104.  
  105. /*
  106.  * Offsets used by 'ptrace' system call interface.
  107.  */
  108.  
  109. #define PT_R0 204
  110. #define PT_R1 200
  111. #define PT_R2 196
  112. #define PT_R3 192
  113. #define PT_R4 188
  114. #define PT_R5 184
  115. #define PT_R6 180
  116. #define PT_R7 176
  117. #define PT_P0 172
  118. #define PT_P1 168
  119. #define PT_P2 164
  120. #define PT_P3 160
  121. #define PT_P4 156
  122. #define PT_P5 152
  123. #define PT_FP 148
  124. #define PT_USP 144
  125. #define PT_I0 140
  126. #define PT_I1 136
  127. #define PT_I2 132
  128. #define PT_I3 128
  129. #define PT_M0 124
  130. #define PT_M1 120
  131. #define PT_M2 116
  132. #define PT_M3 112
  133. #define PT_L0 108
  134. #define PT_L1 104
  135. #define PT_L2 100
  136. #define PT_L3 96
  137. #define PT_B0 92
  138. #define PT_B1 88
  139. #define PT_B2 84
  140. #define PT_B3 80
  141. #define PT_A0X 76
  142. #define PT_A0W 72
  143. #define PT_A1X 68
  144. #define PT_A1W 64
  145. #define PT_LC0 60
  146. #define PT_LC1 56
  147. #define PT_LT0 52
  148. #define PT_LT1 48
  149. #define PT_LB0 44
  150. #define PT_LB1 40
  151. #define PT_ASTAT 36
  152. #define PT_RESERVED 32
  153. #define PT_RETS 28
  154. #define PT_PC 24
  155. #define PT_RETX 20
  156. #define PT_RETN 16
  157. #define PT_RETE 12
  158. #define PT_SEQSTAT 8
  159. #define PT_IPEND 4
  160.  
  161. #define PT_ORIG_R0 208
  162. #define PT_ORIG_P0 212
  163. #define PT_SYSCFG 216
  164. #define PT_TEXT_ADDR 220
  165. #define PT_TEXT_END_ADDR 224
  166. #define PT_DATA_ADDR 228
  167. #define PT_FDPIC_EXEC 232
  168. #define PT_FDPIC_INTERP 236
  169.  
  170. #endif                /* _BFIN_PTRACE_H */
  171.